import uvicorn
from fastapi import FastAPI
from typing import Optional
from pydantic import BaseModel

'''
 什么是请求体：请求体是客户端发送给 API 的数据。

什么是响应体：响应体是 API 发送给客户端的数据。

大部分的请求都会有请求体的。你不能使用 GET 操作（HTTP 方法）发送请求体。
'''

app = FastAPI()
# 请求体模型
class Item(BaseModel):
    name: str
    desc: Optional[str] = None
    price: float

@app.post('/items')
def create_item(item: Item):
    return item

'''
我们在代码中创建数据模型，然后数据模型声明为继承自 BaseModel 的类。
使用标准的 Python 类型来声明所有属性。

当一个模型属性具有默认值时，它不是必需的。否则它是一个必需属性。将默认值设为 None 可使其成为可选属性。我们去请求下，当我们不传递desc看下。
'''

@app.post('/items2')
def create_item2(item: Item):
    if item.price > 100:
        return '太贵了'
    return item


if __name__ == '__main__':
    uvicorn.run(app="main:app", host="127.0.0.1", port=8000, reload=True, debug=True)

